package com.tangkeyon.dao;

import com.tangkeyon.pojo.Cart;
import com.tangkeyon.pojo.CartExample;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.omg.PortableInterceptor.INACTIVE;

public interface CartMapper {
    long countByExample(CartExample example);

    int deleteByExample(CartExample example);

    int deleteByPrimaryKey(Integer id);

    int insert(Cart record);

    int insertSelective(Cart record);

    List<Cart> selectByExample(CartExample example);

    Cart selectByPrimaryKey(Integer id);

    int updateByExampleSelective(@Param("record") Cart record, @Param("example") CartExample example);

    int updateByExample(@Param("record") Cart record, @Param("example") CartExample example);

    int updateByPrimaryKeySelective(Cart record);

    int updateByPrimaryKey(Cart record);

    /**
     * 根据用户id和产品的id查询用户的某个购物车中的商品
     * @param productId
     * @param userId
     * @return
     */
    Cart selectCartByProductIdAndUserId(@Param("productId") Integer productId, @Param("userId") Integer userId);

    /**
     * 根据用户id查询某个用户的购物车全部产品
     * @param userId
     * @return
     */
    List<Cart> selectCartByUserId(Integer userId);

    /**
     *  根据用户的id查询某个用户购物车中没有勾选的商品
     * @param userId
     * @return
     */
    int selectCheckedByUserId(Integer userId);

    /**
     *根据用户名和商品id集合删除用户购物车中的商品
     * @param id
     * @param productIdList
     * @return
     */
    int deleteProductByIdProductId(@Param("id") Integer id,@Param("list") List<String> productIdList);

    /**
     *  根据用户id查询用户购物车中所有商品的数量
     * @param userId
     * @return
     */
    int SelectAllCountByUserId(Integer userId);

    /***
     *对用户购物车中的商品进行选中或取消选中的操作
     * @param userId
     * @param productId
     * @param operation
     * @return
     */
    int updateSelectOrUnSelect(@Param("userId") Integer userId,@Param("productId")Integer productId,@Param("operation") Integer operation);

    /***
     *  根据用户的id查询该用户购物车中选中的商品
     * @param userId
     * @return
     */
    List<Cart> selectCheckProduct(Integer userId);



}